package com.zmn.oms.third.youshu.dto;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.*;

import java.util.List;

/**
 * 类描述：腾讯有数据退货退款订单上报数据
 *
 * @author ligang
 * @since 2022/3/22 16:06
 */
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@Builder
@AllArgsConstructor
public class YouShuReturnOrderDTO extends YouShuRequest{

    /**
     * 数据源Id
     */
    private String dataSourceId;

    /**
     * 订单列表 数组最大长度 50
     */
    private List<YouShuReturnOrderDTO.Order> orders;

    /**
     * 订单信息
     */
    @Data
    @NoArgsConstructor
    @Builder
    @AllArgsConstructor
    public static class Order {
        /**
         * 商家退货退款单号
         */
        @JSONField(name = "external_return_order_id")
        private String externalReturnOrderId;
        /**
         * 关联的订单号
         */
        @JSONField(name = "external_order_id")
        private String externalOrderId;
        /**
         * 货退款单创建时间，unix时间戳 字段长度为 13 字节
         */
        @JSONField(name = "return_create_time")
        private String returnCreateTime;
        /**
         * 该笔退货退款单的商品数量
         */
        @JSONField(name = "return_num")
        private Integer returnNum;

        /**
         * 该笔退货退款单的商品退款金额，单位元，2位小数
         */
        @JSONField(name = "return_amount")
        private Float returnAmount;

        /**
         * 运费退款金额，单位元，2位小数注：运费为0时，传0
         */
        @JSONField(name = "return_freight_amount")
        private Float returnFreightAmount;

        /**
         * 该笔退货退款单的退款金额，单位元，2位小数注：商品退款金额+运费退款金额=订单金额
         */
        @JSONField(name = "return_order_amount")
        private Float returnOrderAmount;

        /**
         * 退货退款单状态，传1290（退货退款完成）
         */
        @JSONField(name = "return_order_status")
        private String returnOrderStatus;

        /**
         * 状态变更时间，unix毫秒级时间
         */
        @JSONField(name = "status_change_time")
        private String statusChangeTime;

        /**
         * 主订单商品信息，数组类型，每个sku存一个数组单位
         */
        @JSONField(name = "return_goods_info")
        private List<ReturnGoodsInfo> returnGoodsInfos;
    }

    @Data
    @NoArgsConstructor
    @Builder
    @AllArgsConstructor
    public static class ReturnGoodsInfo {

        /**
         * sku 编号
         */
        @JSONField(name = "external_sku_id")
        private String externalSkuId;

        /**
         * sku 名称
         */
        @JSONField(name = "sku_name_chinese")
        private String skuNameChinese;

        /**
         * sku 所属 spu 编号，若无 spu，传输内容请与 external_sku_id 保持一致
         */
        @JSONField(name = "external_spu_id")
        private String externalSpuId;

        /**
         * spu 名称，若无 spu，传输内容请与 sku_name_chinese 保持一致
         */
        @JSONField(name = "spu_name_chinese")
        private String spuNameChinese;

        /**
         * 退货商品金额，单位元，两位小数
         */
        @JSONField(name = "return_goods_amount")
        private Float returnGoodsAmount;

        /**
         * 退货商品数量
         */
        @JSONField(name = "return_goods_num")
        private Integer returnGoodsNum;
    }
}
